extension: make rgb8 to rgba8 conversion faster
authorØyvind Kolås <pippin@gimp.org>
Sun, 29 Jun 2014 18:15:11 +0000 (20:15 +0200)
committerØyvind Kolås <pippin@gimp.org>
Sun, 29 Jun 2014 18:27:17 +0000 (20:27 +0200)
For all pixels but the last one, do a 32bit load/store + 8bit immediate store
instead of byte by byte copying.

extensions/gggl.c

index 29b4c51b47d2e8d6c3f4948839529e7835d388ba..55887597401ce02ac63daa4df0a1cd13e38d8401 100644 (file)
@@ -943,20 +943,18 @@ conv_rgbA8_rgba8 (unsigned char *src, unsigned char *dst, long samples)
 static long
 conv_rgb8_rgba8 (unsigned char *src, unsigned char *dst, long samples)
 {
-  long n = samples;
-
+  long n = samples-1;
   while (n--)
     {
-      /**(unsigned int *) dst = *(unsigned int *) src;
-         dst[3] = 255;*/
-
-      dst[0] = src[0];
-      dst[1] = src[1];
-      dst[2] = src[2];
+      *(unsigned int *) dst = *(unsigned int *) src;
       dst[3] = 255;
       src   += 3;
       dst   += 4;
     }
+  dst[0] = src[0];
+  dst[1] = src[1];
+  dst[2] = src[2];
+  dst[3] = 255;
   return samples;
 }